package com.wyh.service;


import com.wyh.common.response.PageInfo;
import com.wyh.common.result.R;
import com.wyh.entity.AdminUser;
import com.wyh.entity.MsgRecontact;
import com.wyh.request.MsgRecontactRequest;
import com.wyh.request.MsgVerifyMessageRequest;
import com.wyh.vo.VerifyMessageVo;

import java.util.List;

/**
 * 联系人,非好友接口
 *
 * @author WangYuHang
 * @date 2024-03-08
 */
public interface IMsgRecontactService {


    /**
     * 添加好友
     * @param msgRecontactRequest
     * @return
     */
    R<String> addFriend(MsgRecontactRequest msgRecontactRequest);

    /**
     * 获取好友列表
     * @return
     */
    R<List<MsgRecontact>> queryList();


    /**
     * 判断用户1 是否 有用户2的好友
     * @param userId1
     * @param userId2
     * @return
     */
    Boolean isFriend(String userId1,String userId2);


    /**
     * 判断是否超过好友上限
     * @param userId
     * @return
     */
    Boolean isOutFriendMax(String userId);
    /**
     * 根据id搜索好友
     * @param userId
     * @return
     */
    R<AdminUser> queryById(String userId);

    /**
     * 删除好友
     * @param friendId
     * @return
     */
    R<String>  deleteOne(String friendId);
    /**
     * 新增
     *
     * @param param param
     * @return MsgRecontact
     */
    MsgRecontact add(MsgRecontact param);


    /**
     * 修改备注
     * @param friendId
     * @param remark
     * @return
     */
    R<String> updateRemark(String friendId,String remark);

    /**
     * 删除
     *
     * @param id id
     * @return boolean
     */
    boolean delete(Integer id);

    /**
     * 批量删除
     *
     * @param ids ids
     * @return boolean
     */
    boolean deleteBatch(List<Integer> ids);

    /**
     * 更新
     *
     * @param param param
     * @return boolean
     */
    boolean update(MsgRecontactRequest param);

    /**
     * 查询单条数据，Specification模式
     *
     * @param id id
     * @return MsgRecontact
     */
    MsgRecontact getById(Integer id);

    /**
     * 查询分页数据
     *
     * @param param param
     * @return PageInfo<MsgRecontact>
     */
    PageInfo<MsgRecontact> pageList(MsgRecontactRequest param);


    /**
     * 查询所有数据
     *
     * @return List<MsgRecontact>
     */
    List<MsgRecontact> list(MsgRecontactRequest param);


}
